/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model.estrutura;

import java.io.Serializable;

/**
 *
 * @author Thiago
 */
public class MalhaRegular extends Poligono implements Serializable {

    public MalhaRegular(int[][] matriz) {
        super();
        computaFace(matriz);
    }

    private void computaFace(int[][] matriz) {
        int largura = matriz.length;
        int altura = matriz[0].length;
        for (int i = 0; i < largura - 1; i++) {
            for (int j = 0; j < altura - 1; j++) {
                Ponto p1 = new Ponto(i, j, matriz[i][j]);
                Ponto p2 = new Ponto(i + 1, j, matriz[i + 1][j]);
                Ponto p3 = new Ponto(i, j + 1, matriz[i][j + 1]);
                Ponto p4 = new Ponto(i + 1, j + 1, matriz[i + 1][j + 1]);
                this.listaPontos.add(p1);
                this.listaPontos.add(p2);
                this.listaPontos.add(p3);
                this.listaPontos.add(p4);

                Aresta a1 = new Aresta(p1, p2);
                Aresta a2 = new Aresta(p2, p3);
                Aresta a3 = new Aresta(p3, p1);
                Aresta a4 = new Aresta(p2, p4);
                Aresta a5 = new Aresta(p4, p3);
                Aresta a6 = new Aresta(p3, p2);
                this.listaArestas.add(a1);
                this.listaArestas.add(a2);
                this.listaArestas.add(a3);
                this.listaArestas.add(a4);
                this.listaArestas.add(a5);
                this.listaArestas.add(a6);

                Face f1 = new Face();
                Face f2 = new Face();
                f1.addAresta(a1);
                f1.addAresta(a2);
                f1.addAresta(a3);
                f2.addAresta(a4);
                f2.addAresta(a5);
                f2.addAresta(a6);
                this.listaFaces.add(f1);
                this.listaFaces.add(f2);
            }
        }
    }

    public String toString() {
        return "Numero de pontos: " + this.listaPontos.size();

    }
}
